    #pragma once

    #include <iostream>
    #include <string>
    #include "util.hpp"
    namespace Log
    {
        using namespace util;
        enum
        {
            INFO,
            DEBUG,
            WARNING,
            ERROR,
            FATAL
        };
        inline std::ostream &Log(const std::string &Level, const std::string &filename, const int &line)
        {
            std::string message = "[";
            message += Level;
            message += "]";

            message += "[";
            message += filename;
            message += "]";
            
            message += "[";
            message += std::to_string(line);
            message += "]";

            message += "[";
            message += TimeUtil::GetTimeStamp();
            message += "]";

            std::cout << message;
            return std::cout;
        }
        // # 是一个特殊的字符串化运算符
        #define LOG(level) Log::Log(#level, __FILE__, __LINE__)  // 明确调用Log命名空间下的Log函数
    }